
電腦裝過
Git後,就會有一個.gitconfig檔案,裡面除了記載了你的基本資料外,也可以記載你的預設git template路徑。
所謂預設的Git Template即以後新的新的專案Clone下來後,都會套上這份git設定。
而假若原本專案有使用Husky,Husky與Template重疊的設定,Husky會選擇不覆蓋。
打個比方,我們有pre-commit,pre-push兩份模板作為預設的git-hooks。
git-clone了一個新專案下來時,假設新專案本身有在使用Husky,這專案的Husky有commit-msg和pre-push兩份檔案。
那麼順序會是這樣運作:git-clone下來時執行了git-init因此會把git-template搬一份過去專案底下,接著往後執行到Husky(npm install)時,重疊的檔案名就不會做任何動作,因此上面的情況來說pre-push檔仍舊會是git-template的。
我用這方法訂製了屬於我自己的個人化commit規則,我用它來強迫我在每次push前檢查我的commit堆中有沒有任一fix/test/refactor前綴的commit,這前綴的故事請閱讀這篇,目的是希望自己不要不斷新功能(feat),而忘了寫測試,重構,修復Bug,導致產品逐漸失去穩定度。
git-init的專案都會遵循同樣規則。我藉此達到我自動化的一項實作,但要注意不得與團隊共識相違背,也因此我才去研究了Template的特性。
在一個自己滿意的地方建立一個資料夾,作為存放git-template的資料夾
假設你的資料夾叫做.git-templates,
接著我們去.gitconfig檔上面加上一段,
即以後git init時,會自動取這個路徑底下的資料作為預設檔。
接著我們回到剛剛那個git-template的資料夾,在裡面建立一個hooks資料夾,裡面存放我們想要做為預設的git-Hooks檔案。
可以參考我的結構,我是放在User底下
往後clone專案,就可以得到屬於自己的git設定了。
不建議刪掉.git重新git init哦,該專案local history會全部消失,psuh上去重新clone會是比較好的作法。